The field of Unified Communications (UC) is a growing technology that unifies various forms of human communication via a device into a common user experience. Unified Communications can integrate real-time communications services such as instant messaging and presence, telephony, and video conferencing with other communications services such as voicemail, email, facsimile, and short messaging services.
Unified Communications can also be virtualized, where a UC application can run in a hosted virtual desktop (HVD) while the user interface for the application is displayed on a remote client endpoint (e.g., thin client) device. A virtual desktop infrastructure (VDI) supports the interactions between the HVD and the client endpoint device.
In a typical VDI deployment, one or more locally connected universal serial bus (USB) audio and video devices (e.g., a microphone and camera) are utilized with the HVD for use in windows and/or other types of applications in the virtual environment. Some non-limiting examples of applications utilized at the HVD include real-time communication applications such as Skype, Cisco Unified Personal Communicator, WebEx, GotoMeeting, etc. and also recording applications such as Camtasia, Photobooth, movie maker applications, dictation software, etc. Typically, the audio and video devices at the remote client endpoint are permanently redirected and thus locked by the VDI protocol client running on the remote endpoint client device, such that the audio and video devices are not available for use any another application or service locally at the client device.
In contrast, when using the audio/video devices for local UC applications by the client device (e.g., running real-time voice/video sessions directly at the client endpoint device), the audio and video devices are locked for such local use and cannot be used for applications by the HVD. This problem can be exacerbated in scenarios in which the audio/video devices are already locked by the HVD even when they are not actively being used. There is further no easy mechanism for detecting and arbitrating between the HVD and a local UC stack.